From 5b6313f16f508882a0ea67716b7dbaa1c6967f04 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Mon, 30 Jun 2025 08:28:13 +0000 Subject: (대표님) 20250630 16시 - 유저 도메인별 라우터 분리와 보안성검토 대응 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/[lng]/engineering/(engineering)/bqcbe/page.tsx | 74 ++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 app/[lng]/engineering/(engineering)/bqcbe/page.tsx (limited to 'app/[lng]/engineering/(engineering)/bqcbe/page.tsx') diff --git a/app/[lng]/engineering/(engineering)/bqcbe/page.tsx b/app/[lng]/engineering/(engineering)/bqcbe/page.tsx new file mode 100644 index 00000000..ae503feb --- /dev/null +++ b/app/[lng]/engineering/(engineering)/bqcbe/page.tsx @@ -0,0 +1,74 @@ +import { type SearchParams } from "@/types/table" +import { getValidFilters } from "@/lib/data-table" +import { getAllCBE } from "@/lib/rfqs/service" +import { searchParamsCBECache } from "@/lib/rfqs/validations" + +import { AllCbeTable } from "@/lib/cbe/table/cbe-table" + +import { RfqType } from "@/lib/rfqs/validations" +import * as React from "react" +import { Shell } from "@/components/shell" +import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton" + +interface IndexPageProps { + // Next.js 13 App Router에서 기본으로 주어지는 객체들 + params: { + lng: string + } + searchParams: Promise + rfqType: RfqType +} + +export default async function RfqCBEPage(props: IndexPageProps) { + const resolvedParams = await props.params + const lng = resolvedParams.lng + + const rfqType = props.rfqType ?? RfqType.BUDGETARY // rfqType이 없으면 BUDGETARY로 설정 + + // 2) SearchParams 파싱 (Zod) + // - "filters", "page", "perPage", "sort" 등 contact 전용 컬럼 + const searchParams = await props.searchParams + const search = searchParamsCBECache.parse(searchParams) + const validFilters = getValidFilters(search.filters) + + const promises = Promise.all([ + getAllCBE({ + ...search, + filters: validFilters, + rfqType + } + ) + ]) + + // 4) 렌더링 + return ( + +
+
+
+

+ Commercial Bid Evaluation +

+

+ 초대된 협력업체에게 CBE를 보낼 수 있습니다.
체크박스 선택을 하면 초대 버튼이 활성화됩니다. 버튼 클릭 후 첨부파일을 함께 전송하면 CBE 내용이 메일로 전달되고 eVCP에도 협력업체가 입력할 수 있게 자동 생성됩니다. +

+
+
+
+ + + } + > + + +
+ ) +} \ No newline at end of file -- cgit v1.2.3